package com.ruoyi.aitcommon.service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.ruoyi.aitcommon.anotation.ServiceLog;
import com.ruoyi.aitcommon.utils.MapUtils;
import com.ruoyi.aitcommon.vo.AggMap;

/**
 * AggMap处理类
 * @author Administrator
 *
 */
@Service
public class AggVOService {
	/**
	 * AggMap 字段简单映射,将数据中的key替换为映射中的value(key->value)
	 * <pre>
	 * 举例: 
	 * {"OA字段":"这是字段值"}转化为{"U9字段":"这是字段值"}
	 * </pre>
	 * @param datas AggMap集合
	 * @param headmap 表头映射
	 * @param bodymap 表体映射
	 * @return 新AggMap集合
	 */
	@ServiceLog("AGG转换服务")
	public List<AggMap> transObjectKeytoValue(List<AggMap> datas,
			Map<String, Object> headmap, Map<String, Object> bodymap) {
		List<AggMap> retlist = new ArrayList<AggMap>();
		for (AggMap agg : datas) {
//			表头VO处理
			Map<String, Object> head = MapUtils.transObjectKeytoValue(agg.getHeadVO(), headmap);
			List<Map<String, Object>> bodys = new ArrayList<Map<String, Object>>();
			for (Map<String, Object> bodyvo : agg.getBodyVOS()) {
//				表体VO处理
				Map<String, Object> body = MapUtils.transObjectKeytoValue(bodyvo, bodymap);
				bodys.add(body);
			}
			AggMap retagg = new AggMap(head,bodys);
			retlist.add(retagg);
		}
		return retlist;
	}

	/**
	 * AggMap 字段简单映射,将数据中的key替换为映射中的key(value->key)
	 * <pre>
	 * 举例: 
	 * {"U9字段":"这是字段值"}转化为{"OA字段":"这是字段值"}
	 * </pre>
	 * @param datas AggMap集合
	 * @param headmap 表头映射
	 * @param bodymap 表体映射
	 * @return 新AggMap集合
	 */
	@ServiceLog("AGG转换服务")
	public List<AggMap> transObjectValuetoKey(List<AggMap> datas,
			Map<String, Object> headmap, Map<String, Object> bodymap) {
		List<AggMap> retlist = new ArrayList<AggMap>();
		for (AggMap agg : datas) {
//			表头VO处理
			Map<String, Object> head = MapUtils.transObjectValuetoKey(agg.getHeadVO(), headmap);
			List<Map<String, Object>> bodys = new ArrayList<Map<String, Object>>();
			for (Map<String, Object> bodyvo : agg.getBodyVOS()) {
//				表体VO处理
				Map<String, Object> body = MapUtils.transObjectValuetoKey(bodyvo, bodymap);
				bodys.add(body);
			}
			AggMap retagg = new AggMap(head,bodys);
			retlist.add(retagg);
		}
		return retlist;
	}
}